#pragma once

#include "XamlType.h"
#include "XamlScannerFrame.h"




class XamlScannerStack
{

public: 
	XamlScannerStack();
	HRESULT Push(const xshared_ptr<XamlType> & inType);
	HRESULT Pop();
	XUINT32 Depth() const;
	const xshared_ptr<XamlType> & get_CurrentType() const;

	const xshared_ptr<XamlProperty> & get_CurrentProperty() const;
	void set_CurrentProperty(const xshared_ptr<XamlProperty> & inProperty);

	const XBOOL & get_CurrentXmlSpacePreserve() const;
	void set_CurrentXmlSpacePreserve(const XBOOL & bSpacePreserve);

	XBOOL get_CurrentlyInContent() const;
	void set_CurrentlyInContent(XBOOL bInContent);
private: 
	xstack<XamlScannerFrame> m_Stack;

	xvector<XamlScannerFrame>::reverse_iterator m_itTopOfStack;

};
